<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * Помощник для формирования form элементов
 *
 * @package CoreFramework
 * @version 1.0
 * @author Gennadiy Kozlenko
 */

/**
 * Формирование text элемента
 *
 * @access public
 * @param string $name
 * @param string $value
 * @param string $extra
 * @return string
 */
function create_text($name, $value = '', $extra = '') {
   $extra = !empty($extra) ? ' ' . $extra : '';
   $output = '<input type="text" name="' . htmlspecialchars($name) . '" value="' . htmlspecialchars($value) . '"' . $extra . " />\n";
   return $output;
} // end create_text

/**
 * Формирование select элемента
 *
 * @access public
 * @param string $name
 * @param array $options
 * @param string $value
 * @param string $extra
 * @return string
 */
function create_select($name, $options, $value = '', $extra = '') {
   $extra = !empty($extra) ? ' ' . $extra : '';
   $output = '<select name="' . htmlspecialchars($name) . '"' . $extra . ">\n";
   $output .= create_options($options, $value);
   $output .= "</select>\n";
   return $output;
} // end create_select

/**
 * Формирование checkbox элемента
 *
 * @access public
 * @param string $name
 * @param boolean $checked
 * @param string $extra
 * @return string
 */
function create_checkbox($name, $checked = false, $extra = '') {
   $extra = !empty($extra) ? ' ' . $extra : '';
   $selected = $checked ? ' checked="checked"' : '';
   $output = '<input type="checkbox" name="' . htmlspecialchars($name) . '"' . $selected . $extra . " />\n";
   return $output;
} // end create_checkbox

/**
 * Формирование группы radio элементов
 *
 * @access public
 * @param string $name
 * @param array $options
 * @param string $value
 * @param string $extra
 * @return string
 */
function create_radio($name, $options, $value = '', $extra = '') {
   $output = '';
   foreach ($options as $key => $val) {
      $key = (string) $key;
      $val = (string) $val;
      $selected = $key == $value ? ' checked="checked"' : '';
      $output .= '<input type="radio" name="' . htmlspecialchars($name) . '" id="id_' . htmlspecialchars($name . '_' . $key) . '" value="' . htmlspecialchars($key) . '"' . $selected . $extra . " />\n";
      $output .= '<label for="id_' . htmlspecialchars($name . '_' . $key) . '">' . $val . "</label><br />\n";
   }
   return $output;
} // end create_radio

function create_radio_element($name, $value = '', $checked = false, $extra = '') {
   $extra = !empty($extra) ? ' ' . $extra : '';
   $selected = $checked ? ' checked="checked"' : '';
   $output = '<input type="radio" name="' . htmlspecialchars($name) . '" value="' . htmlspecialchars($value) . '"' . $selected . $extra . " />\n";
   return $output;
}

/**
 * Формирование textarea элемента
 *
 * @access public
 * @param string $name
 * @param string $value
 * @param string $extra
 * @return string
 */
function create_textarea($name, $value = '', $extra = '') {
   $extra = !empty($extra) ? ' ' . $extra : '';
   $output = '<textarea name="' . htmlspecialchars($name) . '"' . $extra . '>' . htmlspecialchars($value) . "</textarea>\n";
   return $output;
} // end create_textarea

/**
 * Формирование hidden элемента
 *
 * @access public
 * @param string $name
 * @param string $value
 * @param string $extra
 * @return string
 */
function create_hidden($name, $value = '', $extra = '') {
   $extra = !empty($extra) ? ' ' . $extra : '';
   $output = '<input type="hidden" name="' . htmlspecialchars($name) . '" value="' . htmlspecialchars($value) . '"' . $extra . " />\n";
   return $output;
} // end create_hidden

/**
 * Формирование file элемента
 *
 * @param string $name
 * @param string $extra
 * @return string
 */
function create_upload($name, $extra = '') {
   $extra = !empty($extra) ? ' ' . $extra : '';
   $output = '<input type="file" name="' . htmlspecialchars($name) . '"' . $extra . " />\n";
   return $output;
}

/**
 * Формирование набора options для select'а
 *
 * @access public
 * @param array $options
 * @param mixed $value
 * @return string
 */
function create_options($options, $value = '') {
   $output = '';
   foreach ($options as $key => $val) {
      $key = (string) $key;
      if (is_array($val)) {
         $output .= '<optgroup label="' . htmlspecialchars($key) . '">' . create_options($val, $value) . '</optgroup>';
      } else {
         $val = (string) $val;
         $selected = $key == $value ? ' selected="selected"' : '';
         $output .= '<option value="' . htmlspecialchars($key) . '"' . $selected . '>' . $val . "</option>\n";
      }
   }
   return $output;
} // end create_options
